The adoption of the virtualized computing model (also referred to as “the cloud”) has had considerable implications on the business processes associated with provisioning and life cycle management of virtual machines (VMs) which are deployed over the cloud. Advantageously, the ease and speed of provisioning fully functional VMs with pre-configured software stacks has drastically improved the productivity of application developers, scientists and other users and consumers.
Despite the above advantages, proliferation of VMs has introduced major administrative challenges and issues, such as what is commonly referred to as “VM sprawl”. VM sprawl is a consequence of VM creation without control mechanisms in place and can result in over-provisioning of VMs, where some resources (e.g., storage, processing, memory, etc.) are allocated to VMs that no longer utilize such resources. VM sprawl is common in both public and private cloud models, albeit it is typically more acute in the private cloud environment.
VM sprawl is caused by the way VMs are provisioned. In a virtualized computing environment, VM admission is generally governed by scheduling and placement algorithms dealing with capacity and constraints satisfaction. In the dynamic scenario of cloud computing, where several VMs are provisioned and leave the system over time, little is known about how a new VM will use it's requested (i.e., nominal) resources. As such, nominal capacity is used for capacity constraints satisfaction.
Deployed but unused VMs, typically, show a large discrepancy between nominal VM resource allocation and demand, and can prevent new VMs from being provisioned, due to the lack of available nominal resources. This effect is most costly, if the actual cloud utilization remains low. In other words, VM sprawl results in resource congestion which is manifested by a high nominal allocation of resources accompanied by a low actual utilization of the cloud infrastructure.
In practice, administrators experiment with different levels of resource over-commitment to try to cope with VM sprawl. However, it is often difficult to determine the trade-off between increased resource utilization and workload performance degradation due to resource congestion. Given the expected variance in workloads over time, an over-commit solution is likely to be less effective than adaptive solutions, which include reclaiming of resources allocated to abandoned VMs.
The currently applied dynamic solutions are unfortunately problematic as such methods are generally not transparent to users or are not user friendly. Further, such solutions are coarse grained and typically are implemented on ad hoc basis, with performance penalties or intrusive applications. It is desirable to implement methods that can dynamically and adaptively manage resource allocation in a virtualized computing environment.